package com.atguigu.jue.demo01;

import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;

/**
 * @auther zzyy
 * @create 2020-03-28 7:51
 * 出故障了，如何面对？
 *
 * 1 故障现象
 *   java.util.ConcurrentModificationException
 *
 * 2 导致原因
 *
 *
 * 3 解决方法
 *  3.1 new Vector<>();
 *  3.2 Collections.synchronizedList(new ArrayList<>());
 *  3.3 juc---new CopyOnWriteArrayList<>();
 *
 * 4 优化建议(同样的错误不犯第2次)
 *
 * 写时复制 ，同一个时间，有读取，也有写入。  读写分离的思想
 *0
 *
 *
 */
public class NotSafeDemo {
    public static void main(String[] args) {
        List<String> list= new Vector<>();//Collections.synchronizedList(new ArrayList<>());//new Vector<>();//new ArrayList<>();
//        list.add("a");
//        list.add("a");
//        list.add("a");
//        for (String s : list) {
//            System.out.println(s);
//        }
        for (int i = 0; i <= 30; i++) {
            new Thread(()->{
                list.add(UUID.randomUUID().toString().substring(0,6));
                System.out.println(list);
            },String.valueOf(i)).start();
        }
    }
}
